package com.iva.beam.alumnos;

import java.io.Serializable;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.iva.model.SgMensajes;
import com.iva.model.SgMensajesEnv;
import com.iva.model.TbPeriodoEvaluacion;
import com.iva.model.VwAlumnosMateria;
import com.iva.model.VwAlumnosUsuario;
import com.iva.model.VwMensajesEnv;
import com.iva.model.VwMsgEnviados;
import com.iva.model.VwNotas;
import com.iva.service.findService;
import com.iva.service.mensajeService;
import com.iva.service.tareasService;

@Component("loginAlumnosBeam")
public class LoginAlumnosBeam implements Serializable{
	
	@Autowired
	findService find;
	@Autowired
	tareasService tarea;
	@Autowired
	mensajeService mensaje;
	private String idMateriaSeccion;
	public String getIdMateriaSeccion() {
		return idMateriaSeccion;
	}

	public void setIdMateriaSeccion(String idMateriaSeccion) {
		this.idMateriaSeccion = idMateriaSeccion;
	}

	public String getIdperiodo() {
		return idperiodo;
	}

	public void setIdperiodo(String idperiodo) {
		this.idperiodo = idperiodo;
	}


	private String idperiodo;
	private int activeindex;
	private VwAlumnosUsuario usuario;
	private VwAlumnosMateria selectedMateria;
	public VwAlumnosMateria getSelectedMateria() {
		return selectedMateria;
	}

	public void setSelectedMateria(VwAlumnosMateria selectedMateria) {
		this.selectedMateria = selectedMateria;
	}


	private List<VwAlumnosMateria> materiasAlumno;
	private List<VwNotas> listNotasPendientes;
	private VwNotas selectVwNotas;
	private List<VwNotas> listNotasAtrazadas;
	private List<VwNotas> listNotasEnviadas;
	private List<VwNotas> listActividadesPendientes;
	private SgMensajes selectedMessage;
	public SgMensajes getSelectedMessage() {
		return selectedMessage;
	}

	public void setSelectedMessage(SgMensajes selectedMessage) {
		this.selectedMessage = selectedMessage;
	}


	private List<SgMensajes> listSgMensajes;
	public List<SgMensajes> getListSgMensajes() {
		return listSgMensajes;
	}

	public void setListSgMensajes(List<SgMensajes> listSgMensajes) {
		this.listSgMensajes = listSgMensajes;
	}

	public List<VwMsgEnviados> getListSgMensajesEnv() {
		return listSgMensajesEnv;
	}

	public void setListSgMensajesEnv(List<VwMsgEnviados> listSgMensajesEnv) {
		this.listSgMensajesEnv = listSgMensajesEnv;
	}

	private VwMsgEnviados sentMessage;
	public VwMsgEnviados getSentMessage() {
		return sentMessage;
	}

	public void setSentMessage(VwMsgEnviados sentMessage) {
		this.sentMessage = sentMessage;
	}


	private List<VwMsgEnviados> listSgMensajesEnv;
	public List<VwNotas> getListActividadesPendientes() {
		return listActividadesPendientes;
	}

	public void setListActividadesPendientes(List<VwNotas> listActividadesPendientes) {
		this.listActividadesPendientes = listActividadesPendientes;
	}

	public List<VwNotas> getListActividadesNoasistidas() {
		return listActividadesNoasistidas;
	}

	public void setListActividadesNoasistidas(
			List<VwNotas> listActividadesNoasistidas) {
		this.listActividadesNoasistidas = listActividadesNoasistidas;
	}

	public List<VwNotas> getListActividadesAsistidas() {
		return listActividadesAsistidas;
	}

	public void setListActividadesAsistidas(List<VwNotas> listActividadesAsistidas) {
		this.listActividadesAsistidas = listActividadesAsistidas;
	}

	public List<VwNotas> getListActividadesEnviadas() {
		return listActividadesEnviadas;
	}

	public void setListActividadesEnviadas(List<VwNotas> listActividadesEnviadas) {
		this.listActividadesEnviadas = listActividadesEnviadas;
	}


	private List<VwNotas> listActividadesNoasistidas;
	private List<VwNotas> listActividadesAsistidas;
	private List<VwNotas> listActividadesEnviadas;
	private List<TbPeriodoEvaluacion> listTbPeriodoEvaluacion;
	public List<TbPeriodoEvaluacion> getListTbPeriodoEvaluacion() {
		return listTbPeriodoEvaluacion;
	}

	public void setListTbPeriodoEvaluacion(
			List<TbPeriodoEvaluacion> listTbPeriodoEvaluacion) {
		this.listTbPeriodoEvaluacion = listTbPeriodoEvaluacion;
	}

	public List<VwNotas> getListNotas() {
		return listNotas;
	}

	public void setListNotas(List<VwNotas> listNotas) {
		this.listNotas = listNotas;
	}


	private List<VwNotas> listNotas;
	public List<VwNotas> getListNotasEnviadas() {
		return listNotasEnviadas;
	}

	public void setListNotasEnviadas(List<VwNotas> listNotasEnviadas) {
		this.listNotasEnviadas = listNotasEnviadas;
	}

	public List<VwNotas> getListNotasCalificadas() {
		return listNotasCalificadas;
	}

	public void setListNotasCalificadas(List<VwNotas> listNotasCalificadas) {
		this.listNotasCalificadas = listNotasCalificadas;
	}


	private List<VwNotas> listNotasCalificadas;
 
	public List<VwNotas> getListNotasAtrazadas() {
		return listNotasAtrazadas;
	}

	public void setListNotasAtrazadas(List<VwNotas> listNotasAtrazadas) {
		this.listNotasAtrazadas = listNotasAtrazadas;
	}

	public VwNotas getSelectVwNotas() {
		return selectVwNotas;
	}

	public void setSelectVwNotas(VwNotas selectVwNotas) {
		this.selectVwNotas = selectVwNotas;
	}

	public List<VwNotas> getListNotasPendientes() {
		return listNotasPendientes;
	}

	public void setListNotasPendientes(List<VwNotas> listNotasPendientes) {
		this.listNotasPendientes = listNotasPendientes;
	}

	public List<VwAlumnosMateria> getMateriasAlumno() {
		return materiasAlumno;
	}

	public void setMateriasAlumno(List<VwAlumnosMateria> materiasAlumno) {
		this.materiasAlumno = materiasAlumno;
	}

	public VwAlumnosUsuario getUsuario() {
		return usuario;
	}

	public void setUsuario(VwAlumnosUsuario usuario) {
		this.usuario = usuario;
	}

	public int getActiveindex() {
		return activeindex;
	}

	public void setActiveindex(int activeindex) {
		this.activeindex = activeindex;
	}
	
	
	public String dirige(int index){
		
		String tabName =null;
		System.out.println("Ingreso a metodo");		
        HttpSession session = ( HttpSession ) FacesContext.getCurrentInstance().getExternalContext().getSession( true );        
        this.usuario = (VwAlumnosUsuario)session.getAttribute("dto");
		this.activeindex = index;
		this.materiasAlumno = find.listVwAlumnosMateria(this.usuario.getId().getNombreUsuario());
		switch(index){
		case 0:{
			String sqlPend = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=12 and id.estadoActividad='P'";
			this.listNotasPendientes = tarea.listVwNotas(sqlPend);			
			String sqlAtrazadas = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=12 and id.estadoActividad='P'";
			this.listNotasAtrazadas = tarea.listVwNotas(sqlAtrazadas);			
			String sqlEnv = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=12 and id.estadoActividad in('E','O')";
			this.listNotasEnviadas = tarea.listVwNotas(sqlEnv);
			String sqlCal = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=12 and id.estadoActividad='C'";
			this.listNotasCalificadas =  tarea.listVwNotas(sqlCal);
			tabName = "/pages/menusPages/menuAlumno/tabTarea";								
		};
			
			break;
		case 1:{
			String sqlAsistidas = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=14";
			this.listActividadesAsistidas = tarea.listVwNotas(sqlAsistidas);
			String sqlNoAsistidas = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=14";
			this.listActividadesNoasistidas = tarea.listVwNotas(sqlNoAsistidas);
			String sqlPendientes = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=14";
			this.listActividadesPendientes = tarea.listVwNotas(sqlPendientes);
			String sqlEnviadas = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.idActividad=14";
			this.listActividadesEnviadas = tarea.listVwNotas(sqlEnviadas);
			tabName = "/pages/menusPages/menuAlumno/tabActividades";			
		};
			
			break;
		case 2:{
			String query1 = "where codigoReceptor = '"+this.usuario.getId().getNombreUsuario()+"'";
			String query = "where id.codigoEmisario = '"+this.usuario.getId().getNombreUsuario()+"'";
			this.listSgMensajes = mensaje.listSgMensajes(query1);
			this.listSgMensajesEnv = mensaje.findVwMensajesEnv(query);
			tabName = "/pages/menusPages/menuAlumno/tabMensages";
			
			
		};
		
			break;
		case 3:{
			String sql = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"'";
			this.listNotas = tarea.listVwNotas(sql);
			this.listTbPeriodoEvaluacion = tarea.listTbPeriodoEvaluacion(null);
			tabName = "/pages/menusPages/menuAlumno/tabNotas";
		};
			
			break;
		default :
			System.out.println("error");
			
		}				
		System.out.println("Sale Opcion");
		return tabName;
	}
	
	
public void searchResults(){
		
		System.out.println("id materia "+ idMateriaSeccion);
		System.out.println("id periodo "+idperiodo);
		HttpSession session = ( HttpSession ) FacesContext.getCurrentInstance().getExternalContext().getSession( true );        
        this.usuario = (VwAlumnosUsuario)session.getAttribute("dto");
		String sql = "where id.codigoAlumno='"+this.usuario.getId().getNombreUsuario()+"' and id.nombreMateria='" +idMateriaSeccion+ "'";
		this.listNotas = tarea.listVwNotas(sql);
	}
}
